/**
 * 2009-9-14 下午11:08:23 
 * esignature
 * com.smc.dao
 * UserDao
 */
package com.smc.dao;

import java.util.List;

import com.smc.domain.model.Authentication;
import com.smc.domain.model.User;

/**
 * @author chenheng
 * @version 0.0.1
 * 持久层用户操作接口
 */
public interface UserDao {
	/**
	 * 用户登陆
	 * @param username	用户名
	 * @param password	密码
	 * @return
	 */
	public User login_IG_IG_IG_user(String username,String password);
	/**
	 * 查询特定用户的所有权限
	 * @param user	特定的用户
	 * @return
	 */
	public List<Authentication> fetch_IG_IG_IG_authentication(User user);
	/**
	 * 医院用户保存医生
	 * @param user
	 */
	public void save_HO_US_SA_user(User user);
	/**
	 * 持久员查询特定医院的所有医生
	 * @param hospitalUuid
	 * @return
	 */
	public List<User> fetch_OP_US_FE_user(String hospitalUuid);
	/**
	 * 保存用户
	 * @param user
	 */
	public void saveUser(User user);
	/**
	 * 更新用户
	 * @param user	要保存的用户
	 */
	public void updateUser(String uuid,String fileName);
	/**
	 * 
	 * 方法名：updateUser
	 * 
	 * 用途：
	 * 
	 * @param user
	 */
	public void updateUser(User user);
	/**
	 * 取得（未）审核用户
	 * @param verified	是否审核
	 * @param pageIndex	当前页数
	 * @param pageSize	每页显示条目数
	 * @return
	 */
	public List<User> fetchVerifiedUser(boolean verified,int pageIndex,int pageSize);
	/**
	 * 统计（未）审核用户数量
	 * @param verified
	 * @return
	 */
	public int countVerifiedUser(boolean verified);
	/**
	 * 取得所有用户
	 * @param pageIndex	当前页面数
	 * @param pageSize	每页显示的条目数
	 * @return
	 */
	public List<User> fetchUser(int pageIndex,int pageSize);
	/**
	 * 统计所有用户数量
	 * @return
	 */
	public int countUser();
	/**
	 * 查询用户
	 * @param firstName		名
	 * @param lastName		姓
	 * @param pageIndex		当前页面数
	 * @param pageSize		每页显示的页面数量
	 * @return
	 */
	public List<User> searchUser(String firstName,String lastName,int pageIndex,int pageSize) ;
	/**
	 * 统计特定用户名称的用户数量
	 * @param firstName	名
	 * @param lastName	姓
	 * @return
	 */
	public int countSearchUser(String firstName,String lastName);
	/**
	 * 根据主键查询用户
	 * @param uuid	用户主键
	 * @return
	 */
	public User searchUserByUuid(String uuid);
	/**
	 * 保存用户权限
	 * @param user 用户
	 * @param authes 用户权限值组
	 */
	public void saveAuthentication(User user ,int[] authes);
	/**
	 * 检查用户名
	 * @param username	用户名
	 * @return
	 */
	public User fetchUserByUsername(String username);
	/**
	 * 
	 * 方法名：removeUser
	 * 
	 * 用途：删除用户
	 * 
	 * @param uuid
	 */
	public void removeUser(String uuid) ;
}
